<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Baixar vídeo do Instagram</h1>
              <h2 class="sub c-fff f-18 fw400">
                Baixe vídeos, fotos, rolos, histórias e IGTV do Instagram
                Conteúdo on-line
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/pt/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Baixador de fotos do Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Insira o URL da FOTO do Instagram abaixo
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/pt/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Baixe carretéis do Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Insira o URL do Instagram Reels abaixo
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/pt/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Baixar história do Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Insira o URL das histórias do Instagram abaixo
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/pt/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">Baixar vídeo IGTV</h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Insira o URL IGTV do Instagram abaixo
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Recuperando dados, aguarde alguns segundos!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              O site não pode processar seu link porque ele é privado
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Os dados que você inseriu não são um link. Por favor insira um
              link válido, para exemplo:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Todos os recursos do Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta é compatível com todas as variedades de vídeos do
              Instagram e links de imagens.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/pt">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Baixador de vídeos do Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta foi projetado para permitir que você baixe seu
                  próprio conteúdo do Instagram. Oferece suporte para download
                  de ambos vídeos individuais e múltiplos do Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/pt/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Baixador de fotos do Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  O Instagram Photo Downloader do Savinginsta facilita tudo para
                  salvar fotos únicas ou múltiplas, incluindo colagens, do
                  Instagram. Com esta ferramenta, baixando postagens individuais
                  imagens ou uma coleção de fotos do Instagram é simples e
                  direto.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/pt/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Baixe carretéis do Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  O Instagram Reels Downloader da Savinginsta permite que você
                  baixe facilmente vídeos Reels de postagens do Instagram para
                  seu dispositivo, fornecendo uma solução simples onde o
                  Instagram em si não oferece suporte para esta função.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/pt/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Baixador IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  As histórias do Instagram oferecem uma plataforma distinta
                  para os usuários compartilhar suas experiências diárias
                  através de fotos e vídeos com um Grande audiência.
                  Ocasionalmente, você pode querer salvar um favorito história,
                  mas essa funcionalidade não está disponível no aplicativo.
                  Savinginsta resolve esse problema fornecendo uma solução que
                  permite que os usuários baixem e visualizem facilmente
                  histórias do Instagram offline, garantindo que o conteúdo
                  memorável nunca seja perdido.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/pt/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Visualizador de histórias do Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV oferece vídeos de longa duração e, se você não conseguir
                  visualizá-los imediatamente, você tem a opção de baixá-los
                  Vídeos IGTV para o seu PC. Isso permite que você
                  convenientemente revisite e aproveite-os mais tarde, mesmo sem
                  internet conexão e elimina preocupações sobre o conteúdo IGTV
                  sendo removido ou indisponível.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Baixe com o aplicativo Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Nosso aplicativo oferece uma solução rápida e simples para
                download Vídeos do Instagram, fornecendo vídeos com qualidade HD
                sem marcas d'água.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - MELHOR FERRAMENTA DE DOWNLOADER DO INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta se destaca como um downloader de Instagram de primeira
              linha, habilmente elaborado para baixar rapidamente conteúdo de
              alta qualidade de Instagram. Ao procurar o método mais eficaz para
              fazer download Mídia do Instagram, o downloader Savinginsta surge
              como um líder solução de terceiros.
            </p>
            <p class="f-16 c-ccc">
              O Instagram, conhecido como o aplicativo de compartilhamento de
              fotos mais popular do mundo, testemunha o upload de milhões de
              fotos diariamente. Por tal momentos, a necessidade de um
              downloader de vídeo do Instagram torna-se evidente, fornecendo uma
              solução perfeita para suas necessidades imediatas. Essa ferramenta
              é essencial para quem busca preservar seu conteúdo favorito do
              Instagram de forma eficiente.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Recursos do downloader de vídeo Savinginsta Instagram:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Download de vídeo do Instagram Rápido, fácil e seguro.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Você pode sair da sua conta do Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Com apenas um clique de botão, você pode baixar imagens do
                  Instagram e vídeos.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Baixe e salve imagens e vídeos em seu estado original
                  definição e qualidade.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Em contas pessoais, baixe e salve vídeos do Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Alta velocidade: a partir de agora, Savinginsta oferece o mais
                  rápido velocidades de download.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Como usar o Savinginsta Instagram Downloader para salvar do IG
              </h3>
              <div class="note c-ccc f-16">
                Nota: Certifique-se de que o vídeo ou foto do Instagram que você
                deseja o download é de uma conta pública.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Etapa 01:</span>
                  <span class="f-16 c-000"
                    >Copie o URL das fotos e vídeos do Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">No aplicativo Instagram:</div>
                  <div class="c-000 f-16">
                    Para iOS: toque para obter o URL da foto do Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Para Android: clique acima da postagem e selecione 'Copiar o
                    URL do Instagram' e clique em 'Copiar URL de
                    compartilhamento'. A ligação será copiado para sua área de
                    transferência.
                  </div>
                  <div class="fw700 c-000 f-16">- No PC/Mac:</div>
                  <div class="c-000 f-16">
                    Clique com o botão direito na data do vídeo ou foto do
                    Instagram e selecione "Copiar endereço do link" para baixar
                    o conteúdo do Instagram em sua área de trabalho.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Etapa 02:</span>
                  <span class="f-16 c-000"> Cole o URL em Savinginsta.App</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Navegue até Savinginsta.App - o Instagram dedicado
                    downloader.
                  </div>
                  <div class="c-000 f-16">
                    Copie e cole o URL copiado no campo de texto fornecido.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Etapa 03:</span>
                  <span class="f-16 c-000">Iniciar o download</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Clique no botão "Download" para iniciar o vídeo do Instagram
                    ou processo de download de fotos.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Informações importantes de uso
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta foi projetado principalmente para baixar vídeos
                    e imagens da sua própria conta do Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Priorizamos a privacidade do usuário e nos reservamos o
                    direito de recusar serviço se nossas ferramentas forem
                    usadas para infringir privacidade ou acessar material não
                    autorizado.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Para uma compreensão abrangente de nossas políticas

              <a class="fw700 c-blue" href="/terms-of-service">
                leia nossos Termos de Serviço completos aqui.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Ferramentas</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/pt/instagram-story-download"
                      >Baixador de histórias do Instagram</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/pt/instagram-reels-video-download"
                      >Downloader de carretéis do Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Baixador Tiktok</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Apoiar</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Contato </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Jurídico</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Termos de serviço
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> política de Privacidade </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Não somos afiliados ao Instagram ou Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "pt",
    },
    bodyAttrs: {
      "data-lang": "pt",
    },
    title:
      "Instagram Downloader - Baixe vídeos do Instagram online - Savinginsta",
    meta: [
      { property: "og:locale", content: "pt" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: Baixe facilmente vídeos, rolos e fotos do Instagram com nossa ferramenta amigável. Salve seus vídeos do Instagram com rapidez e segurança em qualquer dispositivo.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Baixe vídeos do Instagram online - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Baixe vídeos do Instagram online - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/pt" },

      {
        property: "og:description",
        content:
          "Savinginsta: Baixe facilmente vídeos, rolos e fotos do Instagram com nossa ferramenta amigável. Salve seus vídeos do Instagram com rapidez e segurança em qualquer dispositivo.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/pt" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Baixe vídeos do Instagram online - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: Baixe facilmente vídeos, rolos e fotos do Instagram com nossa ferramenta amigável. Salve seus vídeos do Instagram com rapidez e segurança em qualquer dispositivo.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/pt",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Baixe vídeos do Instagram online - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: Baixe facilmente vídeos, rolos e fotos do Instagram com nossa ferramenta amigável. Salve seus vídeos do Instagram com rapidez e segurança em qualquer dispositivo.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `O que é um baixador de vídeos do Instagram?`,
          content: `Um Instagram Video Downloader é uma ferramenta baseada na web projetada para salvar fotos, vídeos e conteúdo IGTV do Instagram para uso posterior. Savinginsta se destaca como a melhor opção para baixar conteúdo do Instagram sem esforço.`,
        },
        {
          title: `É necessário fazer login na minha conta do Instagram para usar o Savinginsta?`,
          content: `Não, não há necessidade de fazer login na sua conta do Instagram. Savinginsta garante downloads seguros e anônimos do Instagram sem exigir nenhuma informação pessoal.`,
        },
        {
          title: `Posso salvar vídeos diretamente do Instagram?`,
          content: `O download direto de vídeos do feed do Instagram ou de histórias de outras pessoas não é possível através do próprio Instagram. No entanto, Savinginsta oferece uma solução simples. Basta visitar o site em https:// savinginsta.com e seguir as instruções simples fornecidas.`,
        },
        {
          title: `O serviço de download de vídeos e fotos do Instagram é gratuito?`,
          content: `Sim, Savinginsta oferece este serviço de forma totalmente gratuita, sem limitação de número de downloads.`,
        },
        {
          title: `Posso baixar conteúdo de contas privadas do Instagram?`,
          content: `Na verdade, Savinginsta permite baixar vídeos, histórias e fotos de contas privadas do Instagram. Instruções detalhadas estão disponíveis em sua plataforma.`,
        },
        {
          title: `É possível salvar histórias do Instagram?`,
          content: `Absolutamente. Com Savinginsta, você pode visualizar e baixar qualquer história do Instagram. Basta clicar nos três pontos (⁝) da história, copiar o link e colá-lo no Savinginsta para iniciar o download.`,
        },
        {
          title: `O Savinginsta suporta downloads em computadores?`,
          content: `Sim, Savinginsta é totalmente compatível com PCs, permitindo que você baixe vídeos, fotos, histórias do Instagram e muito mais diretamente para o seu computador.`,
        },
        {
          title: `Posso usar o Savinginsta para fazer download do Instagram em dispositivos Android?`,
          content: `Certamente. Para usuários do Android, basta copiar o link da postagem do Instagram, colá-lo no Savinginsta e salvar. Para mais detalhes, visite o guia sobre download do Instagram no Android.`,
        },
        {
          title: `Como posso baixar vídeos e fotos do Instagram no iPhone/iPad (iOS)?`,
          content: `Savinginsta elaborou um guia passo a passo fácil de usar para baixar vários tipos de vídeos para o seu iPhone ou iPad. Siga este link para obter instruções: Baixe vídeos do Instagram no iPhone.`,
        },
        {
          title: `E se o vídeo do Instagram for reproduzido em vez de baixado?`,
          content: `Para resolver isso, clique com o botão direito no vídeo e selecione 'Salvar como...' para escolher o local de salvamento desejado, em vez de clicar com o botão esquerdo.`,
        },
        {
          title: `Onde os vídeos são armazenados após o download?`,
          content: `Os vídeos baixados normalmente são armazenados na pasta ‘Downloads’ em dispositivos móveis Android e PCs.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
 @import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
